/**
 * 增加命名空间方法<br>
 * <p>
 * 用法：$.namespace("a.b.c"); a.b.c.testFunction=function(...);
 */
$.extend($, {
	namespace : function() {
		var o = null, d = null;
		for (var i = 0, len = arguments.length; i < len; i++) {
			d = arguments[i].split(".");
			o = window[d[0]] = window[d[0]] || {};
			var left = d.slice(1);
			for (var i = 0, len = left.length; i < len; i++) {
				o = o[left[i]] = o[left[i]] || {};
			}
		}
		return o;
	},
	SUCCESS : "1",
	ERROR : "-1"
});
/**
 * 判断是否为空
 *
 * @param str
 * @returns {Boolean}
 */
function isEmpty(str) {
	if (str != "" && str != null && str.length != 0) {
		return false;
	} else {
		return true;
	}
}
/*
 * datagrid json节点的解析
 */
$.extend($.fn.datagrid.defaults, {
	loader : function(param, success, error) {
		var opts = $(this).datagrid("options");
		if (!opts.url) {
			return false;
		}
		var pager = $(this).datagrid('getPager');
		$.ajax({
			type : opts.method,
			url : opts.url,
			data : param,
			dataType : "json",
			success : function(data) {
				if (!data) {
					success(data);
				}
				// 同步前后台
				if (!data.rows) {
					data.rows = data.results;
				}
				if (!data.pageNo) {
					data.pageNumber = data.pageNo;
				}
				if (!data.total) {
					data.total = data.totalRecord;
				}
				if (!data.rows) {
					success(data);
					return;
				}
				if (data.rows.length == 0 && data.pageNumber > 1) {
					var pagerNum = data.pageNumber - 1;
					pager.pagination('select', pagerNum);
				} else {
					success(data);
				}
			},
			error : function() {
				error.apply(this, arguments);
			}
		});
	}
});
/*
 * treegrid json节点的解析
 */
$.extend($.fn.treegrid.defaults, {
	loader : function(param, success, error) {
		var opts = $(this).treegrid("options");
		if (!opts.url) {
			return false;
		}
		$.ajax({
			type : opts.method,
			url : opts.url,
			data : param,
			dataType : "json",
			success : function(data) {
				if (!data) {
					success(data);
				}
				// 同步前后台
				if (!data.rows) {
					data.rows = data.list;
				}
				if (!data.total) {
					data.total = data.totalRow;
				}
				success(data);
			},
			error : function() {
				error.apply(this, arguments);
			}
		});
	}
});

/*
 * tree json节点的解析 重写tree的加载器
 * 添加新接受参数fields,fields可以将对于的字段名转为treeNode可接受的字段名，可接受的字段名包括：
 * 【id, text, iconCls, checked, state, attributes, children】
 * 其中【checked, state, attributes】可以接受字符串也可以接受一个函数，若接受函数则可以将函数返回值传递到对应字段,函数包含一个参数r代表对应的当前节点的数据
 */
$.extend($.fn.tree.defaults, {
    loader : function(param, success, error) {
        var opts = $(this).tree("options");
        if (!opts.url) {
            return false;
        }
        $.ajax({
            type : opts.method,
            url : opts.url,
            data : param,
            dataType : "json",
            success : function(data) {
                // 同步前后台
                if ($.type(data) == 'array' && opts.fields) {
                    var convertNode = function(r) {
                        if (opts.fields.id) {
                            r.id = r[opts.fields.id];
                        }
                        if (opts.fields.text) {
                            r.text = r[opts.fields.text];
                        }
                        if (opts.fields.iconCls) {
                            r.iconCls = r[opts.fields.iconCls];
                        }
                        if (opts.fields.checked) {
                            if ($.type(opts.fields.checked) == 'function') {
                                r.checked = opts.fields.checked.apply(this, [r]);
                            } else {
                                r.checked = r[opts.fields.checked];
                            }
                        }
                        if (opts.fields.state) {
                            if ($.type(opts.fields.state) == 'function') {
                                r.state = opts.fields.state.apply(this, [r]);
                            } else {
                                r.state = r[opts.fields.state];
                            }
                        }
                        if (opts.fields.attributes) {
							if ($.type(opts.fields.attributes) == 'function') {
								r.attributes = opts.fields.attributes.apply(this, [r]);
							} else {
								r.attributes = r[opts.fields.attributes];
							}
                        }
                        if (opts.fields.children) {
                            if (r[opts.fields.children]) {
                                r.children = $.map(r[opts.fields.children], function (i) {
                                    return convertNode(i);
                                });
                            }
                        }
                        return r;
                    };
                    data = $.map(data, convertNode);
                    success(data);
                } else {
                    success(data);
                }
            },
            error : function() {
                error.apply(this, arguments);
            }
        });
    }
});

/*
 * 日期默认为yyyy-MM-dd
 */
$.extend($.fn.datebox.defaults, {
	formatter : function(date) {
		var y = date.getFullYear();
		var m = date.getMonth() + 1;
		var d = date.getDate();
		return y + '-' + (m < 10 ? ('0' + m) : m) + '-' + (d < 10 ? ('0' + d) : d);
	}
});
$.ajaxSetup({
	cache : false, // close AJAX cache
	dataType : 'json'
});
$.extend($.messager, {
	show : function(opt) {
		var defaults = $.extend({}, $.fn.dialog.defaults, {
			title : "",
			width : 450,
			height : 300,
			modal : true,
			closed : true,
			maximizable : true,
			msg : ""
		}, opt);
		defaults.style.zIndex = $.fn.dialog.defaults.zIndex++;
		var win = $("<div class=\"easyui-dialog\"></div>").html(defaults.msg).appendTo("body");
		win.dialog(defaults);
		win.dialog("dialog").css(defaults.style);
		win.dialog("open");
		return win;
	}
});

$.extend($.fn.combobox.defaults, {
	panelHeight : 'auto',
	loader : function(param, success, error) {
		var opts = $(this).combobox('options');
		if (!opts.url)
			return false;
		$.ajax({
			type : opts.method,
			url : opts.url,
			data : param,
			dataType : 'json',
			success : function(data) {
				$(data).each(function() {
					if (this.isDefault == 'Y') {
						this.selected = true;
					}
				});
				success(data);
				if (opts.afterLoad) {
					opts.afterLoad(data);
				}
			},
			error : function() {
				error.apply(this, arguments);
			}
		});
	}
});

$(document).ajaxSuccess(function(event, jqxhr, settings) {
	if (settings.url != "about:blank") {
		if (jqxhr.status == 543) {
//			$.messager.alert(common.msg.type.info, "后台错误："+JSON.parse(jqxhr.responseText),"error");
			$.messager.alert(common.msg.type.info, JSON.parse(jqxhr.responseText),"error");
		}else if (jqxhr.responseText.indexOf('login-box') > 0) {// 新版登录界面
			$.messager.alert(common.msg.type.info,"登录超时，请重新登！","error",function(){
				window.top.location.reload();
			});
			$('.panel-tool-close').hide();
		}else if (jqxhr.responseText.indexOf('loginbox') > 0) {// 旧版登录界面
			$.messager.alert(common.msg.type.info,"登录超时，请重新登！","error",function(){
				window.top.location.reload();
			});
			$('.panel-tool-close').hide();
		}
	}
});

$(document).ajaxStop(function() {
});

$(document).ajaxError(function(event, jqxhr, settings, exception) {
//	if (exception == "abort") {
	if (exception == "Internal Server Error" || exception == "") {
		$.messager.alert(common.msg.type.error, "网络中断！");
	} else if (settings.url != "about:blank") {
		if (jqxhr.status == 543) {
//			$.messager.alert(common.msg.type.info, "后台错误："+JSON.parse(jqxhr.responseText));
			$.messager.alert(common.msg.type.info, JSON.parse(jqxhr.responseText));
		}else if (jqxhr.responseText.indexOf('login-box') > 0) {// 新版登录界面
			$.messager.alert(common.msg.type.info,"登录超时，请重新登！","error",function(){
				window.top.location.reload();
			});
			$('.panel-tool-close').hide();
			throw new Error("登录超时，请重新登！");
		}else if (jqxhr.responseText.indexOf('loginbox') > 0) {// 旧版登录界面
			$.messager.alert(common.msg.type.info,"登录超时，请重新登！","error",function(){
				window.top.location.reload();
			});
			$('.panel-tool-close').hide();
			throw new Error("登录超时，请重新登！");
		} else {
			$.messager.alert(common.msg.type.info,"未捕获的异常："+jqxhr.responseText);
		}
	}
	// $.messager.alert(common.common.ajaxError,common.common.ajaxMessage);
});
/*$(document).ajaxSend(function(event, jqxhr, settings) {
	var params = makeParasMap(settings.data);
	var pass = true;
	var exFields = [];
	$.each(params, function(index, value) {
		if ("exFields" == value[0]) {
			exFields = decodeURIComponent(value[1]).split(",");
		}
	});
	if (exFields[0] != "allFields") {
		$.each(params, function(index, value) {
			if ($.inArray(value[0], exFields) < 0) {
				var decodeVal = decodeURIComponent(value[1]);
				if (/^(([^\^\<>%&';=$"'#!?~\]\[{}`\|])*)$/.test(decodeVal) == false) {
					pass = false;
				}
			}
		});
	}

	if (!pass) {
		settings.url = "about:blank";
		$.messager.alert(common.msg.type.info, common.msg.noSpecialChar);
	}
});*/  //wsq2016-7-4 图书编辑器保存书籍内容信息
/**
 * 解析Http请求参数
 *
 * @param str
 *            http请求
 * @returns
 */
function makeParasMap(str) {
	if ($.type(str) == 'string') {
		var tmp = str.split("&");
		var result = [];
		jQuery.map(tmp, function(param, index) {
			result.push(param.split("="));
		});
		return result;
	} else {
		return "";
	}
}
/**
 * 检查多个字段是否含有特殊字符
 *
 * @param strs
 */
function checkFields(strs) {
	var re = /^[\u4e00-\u9fa5a-zA-Z0-9]+$/gi;// 只能输入汉字和英文字母
	if (re.test(strs)) {
		return true;
	} else {
		return false;
	}
}
/**
 * 匹配中文 数字 字母 下划线
 */

function checkInput(str) {
	var pattern = /^[\w\u4e00-\u9fa5]+$/gi;
	if (pattern.test(str)) {
		return false;
	}
	return true;
}

// 取消后退键退出系统
$(document).keydown(function(e) { // 绑定键盘按下事件
	var doPrevent;
	// for IE && Firefox
	var varkey = (e.keyCode) || (e.which) || (e.charCode);
	if (varkey == 8) {
		var d = e.srcElement || e.target;
		if (d.tagName.toUpperCase() == 'INPUT' || d.tagName.toUpperCase() == 'TEXTAREA') {
			doPrevent = d.readOnly || d.disabled;
			if (d.type.toUpperCase() == 'SUBMIT' || d.type.toUpperCase() == 'RADIO' || d.type.toUpperCase() == 'CHECKBOX' || d.type.toUpperCase() == 'BUTTON') {
				doPrevent = true;
			}
		} else {
			doPrevent = true;
		}
	} else {
		doPrevent = false;
	}
	if (doPrevent) {
		e.preventDefault();
	}
});
/**
 * 用法<input name="age" class="easyui-validatebox"
 * data-options="required:true,validType:'integer'"/>
 */
$.extend($.fn.validatebox.defaults.rules, {
	longitudeType : { // 经度 -180 ~ 180 
		validator : function(value, param) {
			return /^[-]?((\d|[1-9]\d?|1[0-7]\d)(\.\d{1,6})?|180(\.0{1,6})?)?$/i.test(value);
		},
		message : "请输入正确的经度（-180 ~ 180）,可保留六位小数"
	},
	latitudeType : { // 纬度  -90 ~ 90 
		validator : function(value, param) {
			return /^[-]?((\d|[1-8]\d|)(\.\d{1,6})?|90(\.0{1,6})?)?$/i.test(value);
		},
		message : "请输入正确的纬度（ -90 ~ 90 ）,可保留六位小数"
	},
	numberBetween : { // 判断数字介于{0}和{1}
		validator : function(value, param) {

			return parseInt(value) >= param[0] && parseInt(value) <= param[1];
		},
		message : common.common.numberBetween
	},
	numberPercent : { // 判断数字介于{0}和{1}
		validator : function(value) {

			return /^(0\.\d{1,2}|1(\.0{0,2})?|0(\.0{0,2})?)$/i.test(value);
		},
		message : common.common.numberPercent
	},
	positiveInteger : {
		validator : function(value) {
			return /^[1-9][0-9]*$/i.test(value);
		},
		message : "请输入正整数"
	},
	bankId : { // 银行账号验证，数字16~19位
		validator : function(value) {
			return /^[0-9]{16,19}$/i.test(value);
		},
		message : common.common.bankId
	},

	minLength : { // 判断最小长度
		validator : function(value, param) {
			return value.length >= param[0];
		},
		message : common.common.minLength
	},

	length : {
		validator : function(value, param) {
			var len = $.trim(value).length;
			return len >= param[0] && len <= param[1];
		},
		message : common.common.length
	},
	floatOrInt : { // 验证是否为小数或整数
		validator : function(value) {
			return /^(\d+(,\d\d\d)*(\.\d+(,\d\d\d)*)?|\d+(\.\d+))?$/i.test(value);
		},
		message : common.common.floatOrInt
	},
	currency : { // 验证货币
		validator : function(value) {
			return /^d{0,}(\.\d+)?$/i.test(value);
		},
		message : common.common.currency
	},
	integer : { // 验证整数
		validator : function(value) {
			return /^[+]?[1-9]+\d*$/i.test(value);
		},
		message : common.common.integer
	},
	chinese : { // 验证中文
		validator : function(value) {
			return /^[\u0391-\uFFE5]+$/i.test(value);
		},
		message : common.common.chinese
	},
	english : { // 验证英语
		validator : function(value) {
			return /^[A-Za-z]+$/i.test(value);
		},
		message : common.common.english
	},
	roleName : { // 验证roleName,英文 中文 数字和下划线
		validator : function(value) {
			return /^[\u4e00-\u9fa5\w]+$/i.test(value);
		},
		message : common.common.roleName
	},
	code : { // 验证code,英文和下划线
		validator : function(value) {
			return /^[A-Za-z0-9_]+$/i.test(value);
		},
		message : common.common.code
	},
	engAndNum : { // 验证数字和英文
		validator : function(value) {
			return /^[A-Za-z0-9]+$/i.test(value);
		},
		message : "只能输入数字和英文"
	},
	unnormal : { // 验证是否包含空格和非法字符
		validator : function(value) {
			return /.+/i.test(value);
		},
		message : common.common.unnormal
	},
	phone : { // 验证电话号码
		validator : function(value) {
			return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value);
		},
		message : common.common.phone
	},
	mobile : { // 验证手机号码
		validator : function(value) {
			return /^(1)\d{10}$/i.test(value);
		},
		message : common.common.mobile
	},
	phoneOrMobile : {// 2014-10-29 验证手机号码或者电话号码
		validator : function(value) {
			return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value) || /^(1)\d{10}$/i.test(value);
		},
		message : "请输入正确格式（例：025-1111111或18260401333）"
	},
	idcard : { // 验证身份证
		validator : function(value) {
			return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
		},
		message : common.common.idcard
	},
	qq : { // 验证QQ,从10000开始
		validator : function(value) {
			return /^[1-9]\d{4,9}$/i.test(value);
		},
		message : common.common.qq
	},
	username : { // 验证用户名
		validator : function(value) {
			return /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/i.test(value);
		},
		message : common.common.username
	},
	shortname : { // 验证简称
		validator : function(value) {
			return /^[a-zA-Z][a-zA-Z0-9]*$/i.test(value);
		},
		message : "字母开头,允许字母数字"
	},
	faxno : { // 验证传真
		validator : function(value) {
			// return /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[
			// ]){1,12})+$/i.test(value);
			return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value);
		},
		message : common.common.faxno
	},
	zip : { // 验证邮政编码
		validator : function(value) {
			return /^[1-9]\d{5}$/i.test(value);
		},
		message : common.common.zip
	},
	ip : { // 验证IP地址
		validator : function(value) {
			return /d+.d+.d+.d+/i.test(value);
		},
		message : common.common.ip
	},
	name : { // 验证姓名，可以是中文或英文
		validator : function(value) {
			// return /^[\u0391-\uFFE5]+$/i.test(value) |
			// /^\w+[\w\s]+\w+$/i.test(value);
			return /^[\u4e00-\u9fa5a-zA-Z]+$/i.test(value);
		},
		message : common.common.name
	},
	orgName : { // 验证部门名称，可以是中文或英文字母开头,允许后跟数字
		validator : function(value) {
			// return /^[\u0391-\uFFE5]+$/i.test(value) |
			// /^\w+[\w\s]+\w+$/i.test(value);
			return /^[\u4e00-\u9fa5a-zA-Z][\u4e00-\u9fa5a-zA-Z0-9]+$/i.test(value);
		},
		message : common.common.orgName
	},
	shopOrgName : { // 验证组织名称，可以是中文或英文字母开头,允许后跟数字
		validator : function(value) {
			return /^[\u4e00-\u9fa5a-zA-Z][\u4e00-\u9fa5a-zA-Z0-9]+$/i.test(value);
		},
		message : common.common.shopOrgName
	},
	carNo : {
		validator : function(value) {
			return /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/.test(value);
		},
		message : common.common.carNo
	},
	carenergin : {
		validator : function(value) {
			return /^[a-zA-Z0-9]{16}$/.test(value);
		},
		message : common.common.carenergin
	},
	email : {
		validator : function(value) {
			return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
		},
		message : common.common.email
	},
	msn : {
		validator : function(value) {
			return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
		},
		message : common.common.msn
	},
	same : {
		validator : function(value, param) {
			if ($("#" + param[0]).val() != "" && value != "") {
				return $("#" + param[0]).val() == value;
			} else {
				return true;
			}
		},
		message : common.common.same
	},
	date : {
		validator : function(value) {
			return /^((?:19|20)\d\d)\/(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$/.test(value);
		},
		message : common.common.date
	},
	qqAndMsn : {
		validator : function(value) {
			return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value) || /^[1-9]\d{4,9}$/i.test(value);
		},
		message : common.common.qqAndMsn
	},
	qq : {
		validator : function(value) {
			return /^[1-9]\d{4,9}$/i.test(value);
		},
		message : "请输入QQ账号"
	},
	// 特殊字符
	specialChar : {
		validator : function(value) {
			return /^(([^\^\.<>%&',;=?$"':#@!~\]\[{}\/`\|])*)$/.test(value) && /^[^——]*$/.test(value);
		},
		message : common.common.specialChar
	},
	mobNums : {
		validator : function(value) {
			return /^(\d{11})(,\d{11})*$/.test(value);
		},
		message : "请将多个手机号用逗号隔开，如：13811111111,13822222222,13833333333"
	}

});

function comboxformatter(value, row, index, codelist) {
	var sValue = "" + value;
	for (var i = 0; i < codelist.length; i++) {
		if (sValue == codelist[i].code) {
			return codelist[i].name;
		}
	}
}

function pageinit(cfg, callback) {
	var codeVar = cfg.getCodeCfg.codeVar;
	var codeSign = cfg.getCodeCfg.groupCode;
	var script = "$.when(";
	for (var i = 0; i < codeVar.length; i++) {
		script += "$.ajax({method : 'get',url : '" + codeSign[i] + "',dataType : 'json'}),";
	}
	script = script.substring(0, script.length - 1) + ");";
	var whenstr = eval(script);
	whenstr.done(function() {
		for (var i = 0; i < arguments.length; i++) {
			cfg.getCodeCfg.codeVar[i] = arguments[i][0];
		}
		callback(cfg);
	});
}

// 备注长度限制

function limitTextArea(field) {
	var maxlimit = 250;
	if (field.value.length > maxlimit)
		field.value = field.value.substring(0, maxlimit);
}

// 根据数据库中字段的长度要求截取文本输入框中输入的字符串

function limitTextArea(field, maxLength) {
	if (field.value.length > maxLength)
		field.value = field.value.substring(0, maxLength);
}

// tree 获取一级子节点
$.extend($.fn.tree.methods, {
	getLeafChildren : function(jq, params) {
		var nodes = [];
		$(params).next().children().children("div.tree-node").each(function() {
			nodes.push($(jq[0]).tree('getNode', this));
		});
		return nodes;
	}
});

// 判断页面中是否存在重复的ID的方法

function checkDuplicate() {
	var i = 0;
	var duplicateIds = new Array();
	$("body [id]").each(function() {
		var id = $(this).attr("id");
		if (id != "" && $("body [id=" + id + "]").length >= 2) {
			// 判断是否已记录重复的值
			if (!contains(duplicateIds, id)) {
				duplicateIds[i] = id;
				alert(common.common.checkDuplicate.id + id + common.common.checkDuplicate.isRepeat);
			}
		}
		i++;
	});
	if (duplicateIds.length == 0) {
		alert(common.common.checkDuplicate.alert);
	}
	return duplicateIds;
}

// 判断某个e元素是否存在于数组a中
function contains(a, e) {
	for (var j = 0; j < a.length; j++)
		if (a[j] == e)
			return true;
	return false;
}
/**
 * 动态加载js<br>
 * <p>
 * eg. loadScript.load(["b.js", "a.js"]).done(function() {test();});
 * <p>
 * 参考userMap.js role.usermap.addRoleUser
 */
$.loadScript = (function() {
	var loadOne = function(url) {
		var dtd = $.Deferred();
		var node = document.createElement('script');
		node.type = "text/javascript";
		var onload = function() {
			dtd.resolve();
		};
		$(node).load(onload).bind('readystatechange', function() {
			if (node.readyState == 'loaded') {
				onload();
			}
		});
		document.getElementsByTagName('head')[0].appendChild(node);
		node.src = url;
		return dtd.promise();
	};

	var load = function(urls) {
		if (!$.isArray(urls)) {
			return load([ urls ]);
		}
		var ret = [];
		for (var i = 0; i < urls.length; i++) {
			ret[i] = loadOne(urls[i]);
		}
		return $.when.apply($, ret);
	};

	return {
		load : load
	};
})();

// 弹出层
$(function() {
	$('#pop_up_w').click(function() {
		$('.pop_up_w_bg').show();
		$('.pop_up_w_table').show();

	})
	$('#pop_up_w_close').click(function() {
		$('.pop_up_w_bg').hide();
		$('.pop_up_w_table').hide();
	})
})

/**
 * 重置数据
 *
 * @author zhangsx
 */
function clearData() {
	// 清楚文本框
	$('input[type=text]').each(function() {
		// 对只读属性文本框不清楚数据
		if (!$(this).attr("readonly")) {
			$(this).val("");
		}
	});

	// 针对日期控件
	$('.Wdate').each(function() {
		$(this).val("");
	});
	// 针对 easyUI 下拉框
	$('.easyui-combobox').each(function() {
		$(this).combobox('setValue', '');
	});
	// 清楚下拉框
	$('select').each(function() {
		$(this).val("");
	});
};

/**
 * 判断dialog 是否过大，如果过大，则下移
 *
 * @param dialogId
 *            dialog DIV的ID
 * @param dialog_top
 *            下移高度
 * @author x_wangr
 */
function setDialogHeight(dialog, dialog_top) {
	var win_height = $(window).height();// 页面高度
	var dialog_height = $(dialog).height();// dialog 高度
	if (win_height - dialog_height <= 0) {
		dialog.panel('resize', {
			top : dialog_top
		});
		$(document.body).height($(dialog).height());
		$(document.body).resize();
		dialog.panel({
			onBeforeClose : function() {
				$(document)[0].location.reload();
			}
		});
	}

}

/**
 * 加载表单数据
 *
 * @param url
 *            路径
 * @param form
 *            表单对象
 *
 * @author zhangsx
 */
function loadDataToForm($url, $form) {
	$.ajax({
		url : $url,
		async : false,
		success : function(data) {
			$form.find("textarea,input,select").each(function() {
				var name = $(this).attr('name');
				if (name) {

					if ($(this).attr('type') == 'radio') {
						$form.find('[type=radio][value=' + data[name] + ']').attr('checked', 'checked');
					} else {
						if (null != data[name] && undefined != data[name] && typeof (data[name]) == 'string') {
							data[name] = data[name].replace(/&lt;/g, "<");
							data[name] = data[name].replace(/&gt;/g, ">");
							data[name] = data[name].replace(/&quot;/g, "\"");
						}
						$(this).val(data[name]);

					}
				}
			});
		}
	});

};

function initFileField(form, input) {
	$("#" + form).attr('enctype', 'multipart/form-data');
	$('#' + input).parent().append("<input type='hidden' id='" + input + "_fileId' />");
	$('#' + input).parent().append("<input class='clearBtn fileBtn' type='button' value='清空' onclick='clearFile(\"" + input + "\")' />");
}
function clearFile(file) {
	$("#" + file).val("");
	var obj = document.getElementById(file);
	if (obj) {
		obj.select();
	}
	if (document.selection) {
		document.selection.clear();
	}
}

// 显示列表图片
function showImageGrid(a, e) {
	var max = 200;
	var html = '<div id="picViewDiv" style="display:none;position:fixed;z-index:111111"></div>';
	$(document.body).append(html);
	var img = "";
	if (typeof a == "string") {
		img = $("<img src='" + a + "' style='border:1px solid #ccc;' id = 'picImage'/>");
	} else {
		img = $("<img src='" + a.href + "' style='border:1px solid #ccc;' id = 'picImage'/>");
	}
	var imgDiv = $("#picViewDiv").append(img);
	$("#picImage").load(function() {
		// 全部图片加载完成时…..
		imgDiv.show();
		$("#picViewDiv").show();
		var width = img.width();
		var height = img.height();

		if (width >= max || height >= max) {

			if (width >= height && width > max) {
				height = height * max / width;
				width = max;
			} else if (height >= width && height > max) {
				width = width * max / height;
				height = max;
			}

		}

		img.width(width);
		img.height(height);

		var pointX = mousePos(e).x;
		// 这里可以得到鼠标Y坐标
		var pointY = mousePos(e).y;
		// var widithTip=Math.round($(window).width()/3);
		// var topTip=Math.round($(window).height()/5);
		if(pointY<height){
			imgDiv.css("left", pointX-width-50);// $(window).width()/3
			imgDiv.css("top", pointY+17);// $(window).height()/5
		}else{
			imgDiv.css("left", pointX-width-50);// $(window).width()/3
			imgDiv.css("top", pointY-height-15);// $(window).height()/5
		}
		

	});
}


//显示列表图片
//商店名称显示（第一列）
function showImageUrlGrid(a, e) {
	var max = 200;
	var html = '<div id="picViewDiv" style="display:none;position:fixed;z-index:111111"></div>';
	$(document.body).append(html);
	var img = "";
	if (typeof a == "string") {
		img = $("<img src='" + a + "' style='border:1px solid #ccc;' id = 'picImage'/>");
	} else {
		img = $("<img src='" + a.href + "' style='border:1px solid #ccc;' id = 'picImage'/>");
	}
	var imgDiv = $("#picViewDiv").append(img);
	$("#picImage").load(function() {
		// 全部图片加载完成时…..
		imgDiv.show();
		$("#picViewDiv").show();
		var width = img.width();
		var height = img.height();

		if (width >= max || height >= max) {

			if (width >= height && width > max) {
				height = height * max / width;
				width = max;
			} else if (height >= width && height > max) {
				width = width * max / height;
				height = max;
			}

		}

		img.width(width);
		img.height(height);

		var pointX = mousePos(e).x;
		// 这里可以得到鼠标Y坐标
		var pointY = mousePos(e).y;
		// var widithTip=Math.round($(window).width()/3);
		// var topTip=Math.round($(window).height()/5);
		if(pointY<height){
			imgDiv.css("left", pointX-width-50);// $(window).width()/3
			imgDiv.css("top", pointY+17);// $(window).height()/5
		}else{
			imgDiv.css("left", pointX-width-50);// $(window).width()/3
			imgDiv.css("top", pointY-height-15);// $(window).height()/5
		}
	});
}


// 隐藏图片
function hideImageGrid(a) {
	$("#picViewDiv").empty().hide();
}

// 鼠标位置
function mousePos(ev) {
	var x = y = 0;
	if (!ev)
		ev = window.event;
	if (typeof window.pageYoffset != 'undefined') {// pageYoffset是Netscape特有
		x = window.pageXOffset;
		y = window.pageYOffset;
	} else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') {// 检测标准模式
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	} else if (typeof document.body != 'undefined') {
		x = document.body.scrollLeft - document.body.clientLeft;
		y = document.body.scrollTop - document.body.clientTop;
	}
	x += ev.clientX;
	y += ev.clientY;
	return {
		'x' : x,
		'y' : y
	};
};

/**
 * 加法运算，避免数据相加小数点后产生多位数和计算精度损失。
 *
 * @param num1加数1 |
 *            num2加数2
 */
function numAdd(num1, num2) {
	var baseNum, baseNum1, baseNum2;
	try {
		baseNum1 = num1.toString().split(".")[1].length;
	} catch (e) {
		baseNum1 = 0;
	}
	try {
		baseNum2 = num2.toString().split(".")[1].length;
	} catch (e) {
		baseNum2 = 0;
	}
	baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
	// return (num1 * baseNum + num2 * baseNum) / baseNum;

	return (accMul(num1, baseNum) + accMul(num2, baseNum)) / baseNum;
};

// 浮点数相减
/*
 * 说明同上面的加法
 */
function dcmSub(arg1, arg2) {
	return dcmAdd(arg1, -arg2);
}

// 浮点数取余数
/*
 * 跟据实际中的案例很容易丧失精度，通常做法是同时扩大10000倍，但考虑 跟前有关因此还是采用先转整数再计算
 */
function dcmYu(arg1, arg2) {
	var r1, r2, m;
	try {
		r1 = arg1.toString().split(".")[1].length;
	} catch (e) {
		r1 = 0;
	}
	try {
		r2 = arg2.toString().split(".")[1].length;
	} catch (e) {
		r2 = 0;
	}
	m = Math.pow(10, Math.max(r1, r2));
	return (accMul(arg1, m) % accMul(arg2, m)) / m;
}

/*
 * 除法函数，用来得到精确的除法结果 说明：javascript的除法结果会有误差，在两个浮点数相除的时候会比较明显。这个函数返回 较为精确的除法结果。
 * 调用：accDiv(arg1,arg2) 返回值：arg1除以arg2的精确结果
 */
function accDiv(arg1, arg2) {
	var t1 = 0, t2 = 0, r1, r2;
	try {
		t1 = arg1.toString().split(".")[1].length
	} catch (e) {
	}
	try {
		t2 = arg2.toString().split(".")[1].length
	} catch (e) {
	}
	with (Math) {
		r1 = Number(arg1.toString().replace(".", ""))
		r2 = Number(arg2.toString().replace(".", ""))
		return (r1 / r2) * pow(10, t2 - t1);
	}
}
/*
 * 乘法函数，用来得到精确的乘法结果 说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
 * 调用：accMul(arg1,arg2) 返回值：arg1乘以arg2的精确结果
 */
function accMul(arg1, arg2) {
	var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
	try {
		m += s1.split(".")[1].length
	} catch (e) {
	}
	try {
		m += s2.split(".")[1].length
	} catch (e) {
	}
	return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
}

// 转化成小数, 原函数toDecimal(datavalue)存在的精度问题，因涉及过多屏蔽。
function toDecimal(datevalue) {
	if (datevalue.indexOf('%') != -1) {
		datevalue = datevalue.replace(/%/g, '');
		if (datevalue.indexOf(',') != -1) {
			datevalue = datevalue.replace(/,/g, '');
		}
		// 除100精度在原有基础上增加2位。
		var decimal = (datevalue.indexOf('.') == -1) ? 0 : (datevalue.length - datevalue.indexOf('.') - 1);
		datevalue = accDiv(datevalue, 100).toFixed(decimal + 2);
		// alert("toDecimal: " + datevalue);
	} else {
		if (datevalue.indexOf(',') != -1) {
			datevalue = datevalue.replace(/,/g, '');
		}
	}
	return datevalue;
}

// 将小数转换为百分数。
function toPercentFormat(datevalue) {
	var aa = accMul(datevalue, 100);
	return "" + aa + "%";
}
/**
 * 金额格式化
 */
function numberFormat(value) {

	var s = parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
	var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1];
	var t = "";
	for (var i = 0; i < l.length; i++) {
		t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
	}
	var retVal = t.split("").reverse().join("") + "." + r;
	retVal = retVal.replace("-,", '-');
	return retVal;
};

$.fn.uploadFile = function(opts, paras) {
	if (typeof opts == "string") {
		return $.fn.uploadFile.methods[opts](this, paras);
	} else {
		this.each(function() {
			if ($(this).data('fileUp')) {
				$(this).data('fileUp').remove();
			}
			opts = opts || {};
			opts.itemId = this.id;
			if (opts.hasClear == undefined) {
				opts.hasClear = true;
			}
			if (opts.view == undefined) {
				opts.view = false;
			}
			uploadConvert(opts);
		});
	}
};

$.fn.uploadFile.methods = {
	display : function(me, paras) {
		if (paras) {
			me.data('fileUp').show();
		} else {
			me.data('fileUp').hide();
		}
	},
	fileExsit : function(me, paras) {
		if (me.data('fileUp')) {
			return !isEmpty(me.data('fileUp').find("span").html());
		} else {
			return true;
		}
	},
	setText : function(me, paras) {
		me.data('fileUp').find("span").html(paras);
	},
	setUrl : function(me, paras) {
		me.data('fileUp').find("input.upBtn").hide();
		me.data('fileUp').find("input.dnBtn").show();
		me.data('fileUp').find("input.vwBtn").show();
	},
	showClearBtn : function(me, paras) {
		if (paras) {
			me.data('fileUp').find("input.clBtn").show();
		} else {
			me.data('fileUp').find("input.clBtn").hide();
		}
	},
	hideEditBtns : function(me) {
		me.data('fileUp').find("input.clBtn").hide();
		me.data('fileUp').find("input.upBtn").hide();
	},
	clearFile : function(me) {
		me.data('fileUp').find('input.upBtn').show();
		me.data('fileUp').find('input.dnBtn').hide();
		me.data('fileUp').find('input.vwBtn').hide();
		me.data('fileUp').find('span').html("");

		me.val("");
		var obj = me[0];
		if (obj) {
			obj.select();
		}
		if (document.selection) {
			document.selection.clear();
		}
	}
};

/**
 * 上传文件控件
 *
 * @param opts
 *            itemId 上传字段的ID fileName要显示文件名称 beforeClear执行清除时的回调函数
 */
function uploadConvert(opts) {
	var id = opts.itemId;
	var divId = "_" + id + "_div";
	var spanId = "_" + id + "_span";
	var frameId = "_" + id + "_frame";
	var clearBtn = "_" + id + "_clearBtn";
	var downBtn = "_" + id + "_downBtn";
	var viewBtn = "_" + id + "_viewBtn";
	var uploadBtn = "_" + id + "_uploadBtn";

	$("#" + id).hide();
	$("#" + id).before('<div id="' + divId + '" style="display: inline;"></div>');
	$("#" + divId).css('width', opts.width);
	$("#" + divId).css('height', opts.height);
	$("#" + divId).append("<span id='" + spanId + "' style='width: 250px; display: inline-block; text-overflow: ellipsis; overflow: hidden;'></span>");
	$("#" + divId).append(
		'<input id="' + clearBtn + '" type="button" class="pup_button01 clBtn" value="清除" onclick=\'clrFile("' + id + '");\'  style="float: right;" />');
	$("#" + divId).append(
		'<input id="' + uploadBtn + '" type="button" class="pup_button01 upBtn" value="上传" onclick=\'openUploadWin("' + id + '");\'  style="float: right;" />');
	if (opts.view) {
		$("#" + divId).append(
			'<input id="' + viewBtn + '" type="button" class="pup_button01 vwBtn" value="查看" onmouseover="showImageGrid(\'' + opts.url
				+ '\', event)" onmouseout="hideImageGrid(\'' + opts.url + '\')" onclick="return false" style="float: right;" />');
	}
	$("#" + divId).append(
		'<input id="' + downBtn + '" type="button" class="pup_button01 dnBtn" value="下载" onclick=\'downFile("' + id + '", "' + opts.url
			+ '")\' style="float: right;" />');

	$("#" + divId).append('<iframe id="' + frameId + '" style="display:none" />');

	if (opts.url && !isEmpty($.trim(opts.url))) {
		$("#" + uploadBtn).hide();
	} else {
		$("#" + downBtn).hide();
		$("#" + viewBtn).hide();
	}

	if (opts.hasClear) {
		$("#" + clearBtn).show();
	} else {
		$("#" + clearBtn).hide();
		$("#" + uploadBtn).hide();
	}

	if (opts.fileName) {
		$("#" + spanId).html(opts.fileName);
	}

	$("#" + id).change(function() {
		var tmp = $("#" + id).val().split("\\");
		tmp = tmp[tmp.length - 1];
		tmp = tmp.split("/");
		tmp = tmp[tmp.length - 1];
		$("#" + spanId).html(tmp);
	});

	if (opts.hide) {
		$("#" + divId).hide();
	}
	$("#" + id).data('fileUp', $("#" + divId));
	$("#" + id).data('beforeClear', opts.beforeClear);
	$("#" + id).data('beforeDown', opts.beforeDown);
	$("#" + id).data('frameId', frameId);
}

/**
 * 清空文件
 *
 * @param file
 */
function clrFile(fileId) {
	if ($("#" + fileId).data('beforeClear')) {
		if ($("#" + fileId).data('beforeClear').call() == false) {
			return;
		}
	}
	$("#" + fileId).data('fileUp').find('input.upBtn').show();
	$("#" + fileId).data('fileUp').find('input.dnBtn').hide();
	$("#" + fileId).data('fileUp').find('input.vwBtn').hide();
	$("#" + fileId).data('fileUp').find('span').html("");

	var fileField = $("#" + fileId);
	fileField.val("");
	var obj = fileField[0];
	if (obj) {
		obj.select();
	}
	if (document.selection) {
		document.selection.clear();
	}
}

/**
 * 打开上传文件窗口
 *
 * @param itemId
 */
function openUploadWin(itemId, flag) {
	if (flag == 1) {
		uploadFile(itemId);
	} else {
		$("#" + itemId).click();
	}
}

/**
 * 下载文件
 *
 * @param url
 * @param backFn
 * @param frameId
 */
function downFile(fileId, url, flag) {
	if (flag == 1) {
		window.open(url);
	} else {
		if ($("#" + fileId).data('beforeDown')) {
			if ($("#" + fileId).data('beforeDown').call() == false) {
				return;
			}
		}
		document.getElementById($("#" + fileId).data('frameId')).src = $.ctx + "/common/file/downFile?url=" + url;
	}

}

function clearFile(file) {
	$("#" + file).val("");
	var obj = document.getElementById(file);
	if (obj) {
		obj.select();
	}
	if (document.selection) {
		document.selection.clear();
	}
}

function delFile(fileId, delBtnId, uploadFileBtnId, downFileBtnId, fileIdUrl) {
	var key = $('#' + fileIdUrl).val();
	if (isEmpty($('#' + fileIdUrl).val())) {
		key = $('#' + fileId).val()
	}
	$.ajax({
		url : $.ctx + '/aliyun/delFile?key=' + key,
		type : 'get',
		success : function(result) {
			if (result.success) {
				$('#' + fileId).val('');
				$('#' + fileIdUrl).val('');
				$('#' + delBtnId).attr("style", "display:none;");
				$('#' + downFileBtnId).attr("style", "display:none;");
				$('#' + uploadFileBtnId).attr("style", "display:;");
			} else {
				alert("删除文件失败！");
				return false;
			}
		}

	});
}

// fileId 文件ID名 ，delBtnId,删除按钮ID ,downFileBtnId 下载按钮Id,uploadFileBtnId 上传按钮ID
function uploadFile(uploadFileBtnId) {
	var url = $.ctx + '/commodity/goodsInfo/editFile?fileId=' + uploadFileBtnId;
	liandisys.dialog.showWindowById({
		itemId : "FileUploadWin",
		href : url,
		resizable : false,
		width : 500,
		height : 200,
		title : "上传文件"
	});
}

function downFiletest(key) {
	$.ajax({
		url : $.ctx + '/aliyun/downFile?key=' + key,
		type : 'post',
		success : function(result) {
		}
	});
}
$.fn.uploadFileNew = function(opts, paras) {
	if (typeof opts == "string") {
		return $.fn.uploadFile.methods[opts](this, paras);
	} else {
		this.each(function() {
			if ($(this).data('fileUp')) {
				$(this).data('fileUp').remove();
			}
			opts = opts || {};
			opts.itemId = this.id;
			if (opts.hasClear == undefined) {
				opts.hasClear = true;
			}
			if (opts.view == undefined) {
				opts.view = false;
			}
			uploadConvertNew(opts);
		});
	}
};

$.fn.uploadFileNew.methods = {
	display : function(me, paras) {
		if (paras) {
			me.data('fileUp').show();
		} else {
			me.data('fileUp').hide();
		}
	},
	fileExsit : function(me, paras) {
		if (me.data('fileUp')) {
			return !isEmpty(me.data('fileUp').find("span").html());
		} else {
			return true;
		}
	},
	setText : function(me, paras) {
		me.data('fileUp').find("span").html(paras);
	},
	setUrl : function(me, paras) {
		me.data('fileUp').find("input.upBtn").hide();
		me.data('fileUp').find("input.dnBtn").show();
		me.data('fileUp').find("input.vwBtn").show();
	},
	showClearBtn : function(me, paras) {
		if (paras) {
			me.data('fileUp').find("input.clBtn").show();
		} else {
			me.data('fileUp').find("input.clBtn").hide();
		}
	},
	hideEditBtns : function(me) {
		me.data('fileUp').find("input.clBtn").hide();
		me.data('fileUp').find("input.upBtn").hide();
	},
	clearFile : function(me) {
		me.data('fileUp').find('input.upBtn').show();
		me.data('fileUp').find('input.dnBtn').hide();
		me.data('fileUp').find('input.vwBtn').hide();
		me.data('fileUp').find('span').html("");

		me.val("");
		var obj = me[0];
		if (obj) {
			obj.select();
		}
		if (document.selection) {
			document.selection.clear();
		}
	}
};
function uploadConvertNew(opts) {
	var id = opts.itemId;
	var divId = "_" + id + "_div";
	var spanId = "_" + id + "_span";
	var frameId = "_" + id + "_frame";
	var clearBtn = "_" + id + "_clearBtn";
	var downBtn = "_" + id + "_downBtn";
	var viewBtn = "_" + id + "_viewBtn";
	var uploadBtn = "_" + id + "_uploadBtn";

	$("#" + id).hide();
	$("#" + id).before('<div id="' + divId + '" style="display: inline;"></div>');
	$("#" + divId).css('width', opts.width);
	$("#" + divId).css('height', opts.height);
	$("#" + divId).append("<span id='" + spanId + "' style='width: 250px; display: inline-block; text-overflow: ellipsis; overflow: hidden;'></span>");
	$("#" + divId).append(
		'<input id="' + clearBtn + '" type="button" class="pup_button01 clBtn" value="清除" onclick=\'clrFile("' + id + '");\'  style="float: right;" />');
	$("#" + divId).append(
		'<input id="' + uploadBtn + '" type="button" class="pup_button01 upBtn" value="上传" onclick=\'openUploadWin("' + id
			+ '","1");\'  style="float: right;" />');
	if (opts.view) {
		$("#" + divId).append(
			'<input id="' + viewBtn + '" type="button" class="pup_button01 vwBtn" value="查看" onmouseover="showImageGrid(\'' + opts.url
				+ '\', event)" onmouseout="hideImageGrid(\'' + opts.url + '\')" onclick="return false" style="float: right;" />');
	}
	$("#" + divId).append(
		'<input id="' + downBtn + '" type="button" class="pup_button01 dnBtn" value="下载" onclick=\'downFile("' + id + '", "' + opts.url
			+ '","1")\' style="float: right;" />');

	$("#" + divId).append('<iframe id="' + frameId + '" style="display:none" />');

	if (opts.url && !isEmpty($.trim(opts.url))) {
		$("#" + uploadBtn).hide();
	} else {
		$("#" + downBtn).hide();
		$("#" + viewBtn).hide();
	}

	if (opts.hasClear) {
		$("#" + clearBtn).show();
	} else {
		$("#" + clearBtn).hide();
		$("#" + uploadBtn).hide();
	}

	if (opts.fileName) {
		$("#" + spanId).html(opts.fileName);
	}

	$("#" + id).change(function() {
		var tmp = $("#" + id).val().split("\\");
		tmp = tmp[tmp.length - 1];
		tmp = tmp.split("/");
		tmp = tmp[tmp.length - 1];
		$("#" + spanId).html(tmp);
	});

	if (opts.hide) {
		$("#" + divId).hide();
	}
	$("#" + id).data('fileUp', $("#" + divId));
	$("#" + id).data('beforeClear', opts.beforeClear);
	$("#" + id).data('beforeDown', opts.beforeDown);
	$("#" + id).data('frameId', frameId);
}

/**
 * 清空文件
 *
 * @param file
 */
function clrFile(fileId) {
	if ($("#" + fileId).data('beforeClear')) {
		if ($("#" + fileId).data('beforeClear').call() == false) {
			return;
		}
	}
	$("#" + fileId).data('fileUp').find('input.upBtn').show();
	$("#" + fileId).data('fileUp').find('input.dnBtn').hide();
	$("#" + fileId).data('fileUp').find('input.vwBtn').hide();
	$("#" + fileId).data('fileUp').find('span').html("");

	var fileField = $("#" + fileId);
	fileField.val("");
	var obj = fileField[0];
	if (obj) {
		obj.select();
	}
	if (document.selection) {
		document.selection.clear();
	}
}

/**
 * 延迟下载文件回调处理
 *
 * @param result
 *            返回结果
 * @param backFn
 *            追加处理
 *
 * @author baotx
 */
function lazyDownFileDone(result) {
	if (result && $.SUCCESS == result.code) {
		var uuid = result.data.result;
		if ($("iframe.exprotFile568468361").length == 0) {
			$("<iframe id='exprotFile568468361'></iframe>").appendTo("body").hide();
		}
		$("iframe#exprotFile568468361")[0].contentWindow.location = $.ctx + '/common/file/fecthFile?uuid=' + uuid;
	} else {
		$.messager.alert(common.msg.type.error, "下载失败");
	}
}

function intersect(a, b) {
	return $.map(a, function(el) {
		if ($.inArray(el, b) >= 0) {
			return el;
		}
	});
}